/*
* $Id: FacetsAndChildrenIterator.java,v 1.5 2007/12/28 13:23:05 valdas Exp $
* Created in 2004 by Tryggvi Larusson
*
* Copyright (C) 2004 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.presentation;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import javax.faces.component.UIComponent;
/**
* Class to override the standard iterator for the method getFacetsAndChildren() in UIComponent
*
* Last modified: $Date: 2007/12/28 13:23:05 $ by $Author: valdas $
*
* @author <a href="mailto:tryggvil@idega.com">Tryggvi Larusson</a>
* @version $Revision: 1.5 $
*/
class FacetsAndChildrenIterator implements Iterator<UIComponent>
{
private Iterator<UIComponent> _facetsIterator;
private Iterator<UIComponent> _childrenIterator;
FacetsAndChildrenIterator(Map<String, UIComponent> facetMap, List<UIComponent> childrenList)
{
this._facetsIterator = facetMap != null ? facetMap.values().iterator() : null;
this._childrenIterator = childrenList != null ? childrenList.iterator() : null;
}
public boolean hasNext()
{
boolean facetsHasNext = false;
boolean childrenHasNext=false;
facetsHasNext = (this._facetsIterator != null && this._facetsIterator.hasNext());
childrenHasNext = (this._childrenIterator != null && this._childrenIterator.hasNext());
return ( facetsHasNext || childrenHasNext );
}
public UIComponent next()
{
boolean facetsHasNext = false;
boolean childrenHasNext=false;
facetsHasNext = (this._facetsIterator != null && this._facetsIterator.hasNext());
childrenHasNext = (this._childrenIterator != null && this._childrenIterator.hasNext());
if (facetsHasNext)
{
return this._facetsIterator.next();
}
else if (childrenHasNext)
{
try{
return this._childrenIterator.next();
}
catch(NoSuchElementException nse){
nse.printStackTrace();
return null;
}
catch(ConcurrentModificationException cme){
cme.printStackTrace();
return null;
}
}
else
{
throw new NoSuchElementException();
}
}
public void remove()
{
throw new UnsupportedOperationException(this.getClass().getName() + " UnsupportedOperationException");
}
}